package com.winner.strategy_pattern.pay;

import org.springframework.beans.factory.InitializingBean;

/**
 * 支付策略接口, 将所有 if-else 的方法都可以写到这里
 * 共同算法定义的骨架 也可以定义不共同的算法骨架
 */
public abstract class PaymentStrategy implements InitializingBean {

// 如果定义为抽象方法, 那么实现类必须都实现所有的抽象方法,
// 这里定义PaymentStrategy抽象类,是使用了模板设计模式,虽然没有定义模板方法(即包含一个final流程性方法, 通用的步骤方法直接写方法体,不通用的调用下面的抽象方法,可以被子类重写)
//    final void prepareRecipe() {  // 声明为final的原因是我们不希望子类覆盖这个方法
//        boilWater();
//        addCondiments();     // 加茶叶 还是加咖啡 需要被子类重写
//        pourInCup();
//    }


    public void pay(Long goodsId, double amount) {
        throw new UnsupportedOperationException();
    }

    /**
     * BBB方法只有阿里有,因为只有阿里重写了BBB方法
     */
    public void BBB(String s) {
        throw new UnsupportedOperationException();
    }
}
